﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros__popup_acpIncluirGestorContrato : System.Web.UI.Page
{
    private const int ItemsPerRequest = 10;
    protected int idContrato = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            OcultaCampos(true);
        }

        if (Request.QueryString["idContrato"] != null)
            idContrato = Int32.Parse(Request.QueryString["idContrato"].ToString());
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        Pesquisa();
        RadGrid1.DataBind();
        OcultaCampos(false);
    }
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CancelEdit();", true);
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        rcbGestor.Text = "";
        OcultaCampos(true);
    }
    protected void rcbGestor_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
    {
        Pessoa pessoa = new Pessoa();
        List<Pessoa> listPessoas = RemoveGestorSelecionado(pessoa.SelectPessoaPesquisa(e.Text));

        int itemOffset = e.NumberOfItems;
        int endOffset = Math.Min(itemOffset + ItemsPerRequest, listPessoas.Count);
        e.EndOfItems = endOffset == listPessoas.Count;

        for (int i = itemOffset; i < endOffset; i++)
        {
            rcbGestor.Items.Add(new RadComboBoxItem(listPessoas[i].Nome, listPessoas[i].IdPessoa.ToString()));
        }

        e.Message = GetStatusMessage(endOffset, listPessoas.Count);
    }
    protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        Pesquisa();
    }
    protected void RadGrid1_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
    {
        if (e.CommandName == "Select")
        {
            int idGestor = 0;
            idGestor = Int32.Parse(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdPessoa"].ToString());

            //Contrato contrato = new Contrato();
            //contrato.IdContrato = idContrato;

            //Pessoa pessoa = new Pessoa();
            //pessoa.IdPessoa = idGestor;

            ContratoGestor contratoGestor = new ContratoGestor();
            contratoGestor.Contrato = new Contrato(idContrato);
            contratoGestor.Pessoa = new Pessoa(idGestor);
            contratoGestor.Status = new Status(1);

            contratoGestor.Salvar();

            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('IsertedGestor');", true);
        }
    }
    #endregion

    #region Metodos
    private void Pesquisa()
    {
        RadGrid1.DataSource = CarregaGestor(rcbGestor.Text);
    }
    public List<Pessoa> CarregaGestor(string nome)
    {
        Pessoa pessoa = new Pessoa();
        List<Pessoa> listPessoa = RemoveGestorSelecionado(pessoa.SelectPessoaPesquisa(nome));

        return listPessoa;
    }
    private static string GetStatusMessage(int offset, int total)
    {
        if (total <= 0)
            return "No matches";

        return String.Format("Items <b>1</b>-<b>{0}</b> de <b>{1}</b>", offset, total);
    }
    protected void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }
    protected List<Pessoa> RemoveGestorSelecionado(List<Pessoa> listPessoas)
    {
        ContratoGestor contratoGestor = new ContratoGestor();
        List<ContratoGestor> listContratoGestor = contratoGestor.SelectPor(idContrato);
                
        foreach (ContratoGestor item1 in listContratoGestor)
        {
            foreach (Pessoa item2 in listPessoas)
            {
                if (item1.Pessoa.IdPessoa == item2.IdPessoa)
                {
                    listPessoas.Remove(item2);
                    break;
                }
            }
        }

        return listPessoas;
    }
    #endregion
}
